//
//  HikeView.swift
//  SwiftDemo
//
//  Created by changlei on 2020/11/14.
//

import SwiftUI

struct HikeView: View {
    var hike: Hike
    @State private var showDetail = false

    var transition: AnyTransition {
        let insertion = AnyTransition.move(edge: .trailing)
                .combined(with: .opacity)
        let removal = AnyTransition.scale
                .combined(with: .opacity)
        return .asymmetric(insertion: insertion, removal: removal)
    }

    var body: some View {
        VStack {
            HStack {
                HikeGraph(hike: hike, path: \.elevation)
                        .frame(width: 50, height: 30)
                        .animation(nil)

                VStack(alignment: .leading) {
                    Text(hike.name)
                            .font(.headline)
                    Text(hike.distanceText)
                }

                Spacer()

                Button(action: {
                    withAnimation {
                        self.showDetail.toggle()
                    }
                }) {
                    Image(systemName: "chevron.right.circle")
                            .imageScale(.large)
                            .rotationEffect(.degrees(showDetail ? 90 : 0))
                            .scaleEffect(showDetail ? 1.5 : 1)
                            .padding()
                }
            }

            if showDetail {
                HikeDetail(hike: hike)
                        .transition(transition)
            }
        }
    }
}

struct HikeView_Previews: PreviewProvider {
    static var previews: some View {
        HikeView(hike: hikeData[0])
                .padding()
        Spacer()
    }
}
